package it.okkam.folgaria;

import it.okkam.costants.Costanti;
import it.okkam.importdatacreaterdf.DatiCatasto;
import it.okkam.importdatacreaterdf.LeggiParticelle;
import it.okkam.strutturedati.ParticellaCatastale;
import it.okkam.utility.ConfigReader;
import it.okkam.utility.FillModel;
import it.okkam.utility.Utility;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import com.hp.hpl.jena.rdf.model.Model;

public class DatiCatastoFolgariaEdificiali implements DatiCatasto {
	public static void main(String[] args) {
		Utility ut = new Utility();
		ConfigReader.configReader();
		final long startTime = ut.printInitialTimeSetTime(ConfigReader.fileEdifFolgaria);
		
		
		DatiCatastoFolgariaEdificiali  datiCatasto = new DatiCatastoFolgariaEdificiali ();
		List<ParticellaCatastale> lista = datiCatasto.leggiParticelle(
				ConfigReader.fileCoordFolgaria,ConfigReader.fileAttrFolgaria, "Folgaria");
		datiCatasto.creaFileRDF(ConfigReader.fileEdifFolgaria, lista, "TURTLE");
		
		ut.printExecutionTime(startTime, lista);
	}

	public List<ParticellaCatastale> leggiParticelle(String filePoligoniPath,
			String fileParticellePath, String comune) {
		
		LeggiParticelle leggiParticelle = new LeggiParticelle();
		List<ParticellaCatastale> lista = leggiParticelle.leggiParticelle(
					filePoligoniPath,fileParticellePath, comune,  Costanti.CODICE_FOLGARIA,Costanti.EDIFICIALE, Costanti.PRINCIPALE );
	
		return lista;
	}
	public File creaFileRDF(String nomeFile, List<ParticellaCatastale> listaParticelleCatastali, String serializzazione) {

		File fileFolgariardf = new File(nomeFile);
		FillModel modello = new FillModel();
		Model model = modello.fillModel(listaParticelleCatastali, Costanti.ONTOLOGIA_FOLGARIA_CATASTO);
				
		try{
		model.write(new PrintWriter(fileFolgariardf), serializzazione);
		}
		catch(FileNotFoundException e) {			
			e.printStackTrace();
		}
		DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
		Date date = new Date();
		System.out.println("["+dateFormat.format(date)+"] Creazione file " + fileFolgariardf.getName() +" terminata!");
		return fileFolgariardf;
	}
}


